﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Bussiness;

namespace WebApplication.Admin
{
    public partial class XuatVoAdd : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadMathang();
                string mahdxvo = "" + Request["MAHDXUATVO"];
                IUnitOfWork iunitfwork = new EFUnitOfWork();
                XUATVORepository repository = new XUATVORepository(new EFRepository<XUATVO>(), iunitfwork);
                XUATVO objxuatvo = null;
                bool iscapnhap = true;
                if (!string.IsNullOrEmpty(mahdxvo))
                {
                    iscapnhap = false;
                    objxuatvo = repository.GetById(mahdxvo);
                    txtmavo.Value = objxuatvo.MAHDXUATVO;
                    txtsoluong.Value = objxuatvo.SOLUONGXUAT.ToString();
                    Dlmathang.SelectedValue = objxuatvo.MAMH;
                }
            }
        }

        protected void lbtncapnhap_Click(object sender, EventArgs e)
        {
            capnhap();
            tonkhovo();
        }
        public void capnhap()
        {
            if (string.IsNullOrEmpty(txtmavo.Value) || Dlmathang.SelectedValue.Equals("0") || string.IsNullOrEmpty(txtsoluong.Value))
            {
                RegisterClientScriptBlock("Thông báo", "<script> alert('Vui lòng nhập đầy đủ')</script>");
                return;
            }
            DateTime dtht = Commomcs.DuyenNgayThangtonvo("Dl19l");
            DateTime dt = Commomcs.convertDate(DateTime.Now.ToString("dd/MM/yyyy"));
            IUnitOfWork iunitfwork = new EFUnitOfWork();
            TONKHO_VORepository repositoryTonkhovo = new TONKHO_VORepository(new EFRepository<TONKHO_VO>(), iunitfwork);
            TONKHO_VO objtonkho = repositoryTonkhovo.All().Where(p => p.MAMH == "Dl19l" && p.NGAYTHANG == dt).FirstOrDefault();
            if (objtonkho != null)
            {
                if (objtonkho.SOLUONGVOTONCUOI < int.Parse(txtsoluong.Value))
                {
                    RegisterClientScriptBlock("Thông báo", "<script> alert('Không đủ')</script>");
                    return;
                }
            }
            else
            {
                TONKHO_VO objtonkhoht = repositoryTonkhovo.All().Where(p => p.MAMH == "Dl19l" && p.NGAYTHANG == dtht).FirstOrDefault();
                if (objtonkhoht == null)
                {
                    RegisterClientScriptBlock("Thông báo", "<script> alert('Không đủ')</script>");
                    return;
                }
                else
                {
                    if (objtonkhoht.SOLUONGVOTONCUOI < int.Parse(txtsoluong.Value))
                    {
                        RegisterClientScriptBlock("Thông báo", "<script> alert('Không đủ')</script>");
                        return;
                    }
                }
            }
            ///Cập nhập
            string mahdxvo = "" + Request["MAHDXUATVO"];
            XUATVORepository repository = new XUATVORepository(new EFRepository<XUATVO>(), iunitfwork);
            XUATVO objxuatvo = null;
            bool iscapnhap = true;
            if (!string.IsNullOrEmpty(mahdxvo))
            {
                iscapnhap = false;
                objxuatvo = repository.GetById(mahdxvo);
            }
            else
            {
                iscapnhap = true;
                objxuatvo = new XUATVO();
            }
           
            objxuatvo.MAHDXUATVO = txtmavo.Value;
            objxuatvo.SOLUONGXUAT = int.Parse(txtsoluong.Value);
            objxuatvo.NGAYTHANG =dt;
            objxuatvo.MAMH = Dlmathang.SelectedValue;
            try
            {
                if (iscapnhap)
                {
                    repository.Add(objxuatvo);
                }
                repository.Save();
            }
            catch (Exception ex)
            {
                RegisterClientScriptBlock("Thông báo", "<script> alert('Lỗi rồi')</script>");
            }
        }
        public void LoadMathang()
        {
            IUnitOfWork initwork = new EFUnitOfWork();
            MATHANGRepository repository = new MATHANGRepository(new EFRepository<MATHANG>(), initwork);
            IQueryable<MATHANG> objMathang = repository.All();
            Dlmathang.DataSource = objMathang;
            Dlmathang.DataValueField = "MAMH";
            Dlmathang.DataTextField = "TENMH";
            Dlmathang.DataBind();
            Dlmathang.Items.Insert(0, new ListItem { Text = "---Chọn mặt hàng---", Value = "0" });
        }
        public void Kiemtravoton()
        {
            DateTime dtht=Commomcs.DuyenNgayThangtonvo("Dl19l");
            DateTime dt=Commomcs.convertDate(DateTime.Now.ToString("dd/MM/yyyy"));
            IUnitOfWork iunitfwork = new EFUnitOfWork();
            TONKHO_VORepository repository = new TONKHO_VORepository(new EFRepository<TONKHO_VO>(), iunitfwork);
            TONKHO_VO objtonkho = repository.All().Where(p => p.MAMH == "Dl19l" && p.NGAYTHANG == dt).FirstOrDefault();
            if (objtonkho != null)
            {
                if (objtonkho.SOLUONGVOTONCUOI < int.Parse(txtsoluong.Value))
                {
                    RegisterClientScriptBlock("Thông báo", "<script> alert('Không đủ')</script>");
                    return;
                }
            }
            else
            {
                TONKHO_VO objtonkhoht = repository.All().Where(p => p.MAMH == "Dl19l" && p.NGAYTHANG == dtht).FirstOrDefault();
                if (objtonkhoht == null)
                {
                    RegisterClientScriptBlock("Thông báo", "<script> alert('Không đủ')</script>");
                    return;
                }
                else
                {
                    if (objtonkhoht.SOLUONGVOTONCUOI < int.Parse(txtsoluong.Value))
                    {
                        RegisterClientScriptBlock("Thông báo", "<script> alert('Không đủ')</script>");
                        return;
                    }
                }
            }
            
        }
        /// <summary>
        /// Cập nhập tồn kho vỏ
        /// </summary>
        public void tonkhovo()
        {
            string mamh = Dlmathang.SelectedValue;
            DateTime dt = Commomcs.convertDate(DateTime.Now.ToString("dd/MM/yyyy"));
            DateTime dtHtruoc = Commomcs.DuyenNgayThangtonvo(mamh);
            IUnitOfWork iunitfwork = new EFUnitOfWork();
            TONKHO_VORepository repositoryTonKhovo = new TONKHO_VORepository(new EFRepository<TONKHO_VO>(), iunitfwork);
            CHITIETHOADONXUATRepository repositoryChitietHDX = new CHITIETHOADONXUATRepository(new EFRepository<CHITIETHOADONXUAT>(), iunitfwork);
            HOADONXUATRepository repositoryHDX1=new HOADONXUATRepository(new EFRepository<HOADONXUAT>(),iunitfwork);
            CHITIETHOADONNHAPRepository repositoryCtietHDN = new CHITIETHOADONNHAPRepository(new EFRepository<CHITIETHOADONNHAP>(), iunitfwork);
            XUATVORepository repositoryXuatVo = new XUATVORepository(new EFRepository<XUATVO>(), iunitfwork);
            IQueryable<XUATVO> LstXuatvo = repositoryXuatVo.All().Where(p => p.MAMH == "Dl19l" && p.NGAYTHANG == dt);
            IQueryable<CHITIETHOADONNHAP> LstHDn = repositoryCtietHDN.All().Where(p => p.MAMH == "Dl19l" && p.HOADONNHAP.NGAYNHAP == dt);
            IQueryable<CHITIETHOADONXUAT> LstHDx = repositoryChitietHDX.All().Where(p => p.MAMH == "Dl19l" && p.HOADONXUAT.NGAYXUAT == dt);
            int tongslvoxuat = 0;
            int Tongslxuat = 0;
            int Tongslnhap = 0;
            bool iscapnhap = true;
            if (LstXuatvo != null)
            {
                foreach (XUATVO Xv in LstXuatvo)
                {
                    tongslvoxuat +=(int) Xv.SOLUONGXUAT;
                }
            }
            if (LstHDn != null)
            {
                foreach (CHITIETHOADONNHAP hdn in LstHDn)
                {
                    Tongslnhap += (int)hdn.SOLUONGNHAP;
                }
            }
            if (LstHDx != null)
            {
                foreach (CHITIETHOADONXUAT hdx in LstHDx)
                {
                    if (!string.IsNullOrEmpty(hdx.SOLUONGVOVE.ToString()))
                    {
                        Tongslxuat += (int)hdx.SOLUONGVOVE;
                    }

                }
            }
            TONKHO_VO objtonkho = null;
            TONKHO_VO objtonkhoht = null;
            if (Dlmathang.SelectedValue.Equals("Dl19l"))
            {
                objtonkho = repositoryTonKhovo.All().Where(p => p.NGAYTHANG == dt && p.MAMH == mamh).FirstOrDefault();
                if (objtonkho != null)
                {
                    iscapnhap = false;
                    int sldau =(int) objtonkho.SOLUONGVODAU;
                    int slnhap=(int)objtonkho.SOLUONGVONHAP;
                    int slam = (int)objtonkho.AMVO;
                    int slxuat = (int)objtonkho.SOLUONGVOXUAT;
                    objtonkho.SOLUONGVODAU = sldau;
                    objtonkho.SOLUONGVONHAP = Tongslxuat;
                    objtonkho.SOLUONGVOXUAT = tongslvoxuat;
                    objtonkho.SOLUONGVOTONCUOI = Tongslxuat + sldau - tongslvoxuat;
                    objtonkho.AMVO = 0;       
                }
                if (objtonkho == null)
                {
                    iscapnhap = true;
                    objtonkho = new TONKHO_VO();
                    objtonkho.MAMH = Dlmathang.SelectedValue;
                    objtonkho.NGAYTHANG = dt;
                    objtonkhoht = repositoryTonKhovo.All().Where(p => p.NGAYTHANG == dtHtruoc && p.MAMH == "Dl19l").FirstOrDefault();
                    if (objtonkhoht == null)
                    {
                        objtonkho.SOLUONGVODAU = 0;
                        objtonkho.SOLUONGVONHAP = Tongslxuat;
                        objtonkho.SOLUONGVOXUAT = tongslvoxuat;
                        objtonkho.SOLUONGVOTONCUOI = Tongslxuat;
                        objtonkho.AMVO = 0;
                    }
                    if (objtonkhoht != null)
                    {
                        objtonkho.SOLUONGVODAU = objtonkhoht.SOLUONGVOTONCUOI;
                        objtonkho.SOLUONGVONHAP = Tongslxuat;
                        objtonkho.SOLUONGVOXUAT =tongslvoxuat;
                        objtonkho.SOLUONGVOTONCUOI = Tongslxuat + objtonkhoht.SOLUONGVOTONCUOI - tongslvoxuat;
                        objtonkho.AMVO = 0;
                    }
                }
                try
                {
                    if (iscapnhap)
                    {
                        repositoryTonKhovo.Add(objtonkho);
                    }
                    repositoryTonKhovo.Save();
                }
               catch(Exception ex)
                {

               }
            }
        
        }
    }
}